package com.xiangxiangjd.config.autotime;

/**
 * @author 老肖
 * @date 2020/9/2 - 16:11
 */

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.xiangxiangjd.idworker.Sid;
import com.xiangxiangjd.utils.DateUtils;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 处理新增和更新的基础数据填充，配合BaseEntity和MyBatisPlusConfig使用
 */
@Component
public class MetaHandler implements MetaObjectHandler {



    @Autowired
    Sid sid;


    /**
     * 新增数据执行
     * @param metaObject
     */
    @Override
    public void insertFill(MetaObject metaObject) {


        this.setFieldValByName("createTime",String.valueOf(System.currentTimeMillis()),metaObject);
        this.setFieldValByName("updateTime",String.valueOf(System.currentTimeMillis()),metaObject);
        this.setFieldValByName("assetNumber",sid.nextShort(),metaObject);
        this.setFieldValByName("delFlag","0",metaObject);
    }

    /**
     * 更新数据执行
     * @param metaObject
     */
    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateTime",String.valueOf(System.currentTimeMillis()),metaObject);
    }

    public static void main(String[] args) {
        String nowTime_en = DateUtils.getNowDate_EN();

        System.out.println(nowTime_en);



//        String Orderno = null;
//        String maxOrderno = "ZC202105239999"; // 从数据库查询出的最大编号
//        System.out.println("maxOrderno=" + maxOrderno);
//        SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); // 时间字符串产生方式
//        String uid_pfix = "ZC" + format.format(new Date()); // 组合流水号前一部分，NO+时间字符串，如：NO20160126
//        System.out.println("time=" + format.format(new Date()));
//        if (maxOrderno != null && maxOrderno.contains(uid_pfix)) {
//            String uid_end = maxOrderno.substring(10, 14); // 截取字符串最后四位，结果:0001
//            System.out.println("uid_end=" + uid_end);
//            int endNum = Integer.parseInt(uid_end); // 把String类型的0001转化为int类型的1
//            System.out.println("endNum=" + endNum);
//            int tmpNum = 10000 + endNum + 1; // 结果10002
//            System.out.println("tmpNum=" + tmpNum);
//            Orderno = uid_pfix + subStr("" + tmpNum, 1);// 把10002首位的1去掉，再拼成NO201601260002字符串
//        } else {
//            Orderno = uid_pfix + "0001";
//        }
//        System.out.println(Orderno);
    }





    public static String subStr(String str, int start) {
        if (str == null || str.equals("") || str.length() == 0)
            return "";
        if (start < str.length()) {
            return str.substring(start);
        } else {
            return "";
        }

    }




}
